home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / modula2 / hk_lib / def_mod / screen.def < prev    next >
Encoding:
Modula Definition  |  1994-09-22  |  8.9 KB  |  195 lines

  1. DEFINITION MODULE  Screen;
  2.  
  3. (*****************************************************************************)
  4. (* Ermoeglicht Zugriff auf die Terminalemulation des Atari.                  *)
  5. (*                                                                           *)
  6. (* Dieses Modul ist wirklich nur fuer die Ausgabe von TOS/TTP-Programmen ge- *)
  7. (* eignet, da die Steuersequenzen nur fuer diese Emulation passen und deswe- *)
  8. (* gen auch nicht umlenkbar sind; wenn die Terminalausgabe durch "TermWindow"*)
  9. (* wie bei nicht gelinkten Objektmodulen geschieht, nuetzt einem dieses Modul*)
  10. (* wenig.                                                                    *)
  11. (*                                                                           *)
  12. (* Eine allgemein verwendbare, umlenkbare Ausgabefunktion fuer Zeichen ist   *)
  13. (* allerdings "WriteChar".                                                   *)
  14. (*                                                                           *)
  15. (* Zugriffe anderer Module ( z.B. "Terminal" ) auf den TOS-(Text)Bildschirm  *)
  16. (* sollten nur ueber dieses Modul laufen.                                    *)
  17. (*___________________________________________________________________________*)
  18. (*   05-Mae-90 , Holger Kleinschmidt                                         *)
  19. (*****************************************************************************)
  20.  
  21.  
  22.   PROCEDURE  WriteRawCon    ((* EIN/ -- *) zeichen : CHAR );
  23.  
  24.   PROCEDURE  WriteRawConStr ((* EIN/ -- *) string : ARRAY OF CHAR );
  25.  
  26.  (*------------------------------------------------------------------------
  27.   | Die Zeichenausgabe laeuft ueber das BIOS, aber nicht ueber die Termi-  |
  28.   | nalemulation. Die Zeichen unterhalb 20H, die sonst als Controlcodes    |
  29.   | interpretiert werden, werden als Graphikzeichen ausgegeben.            |
  30.   | Die Ausgabe ist nicht umlenkbar.                                       |
  31.    ------------------------------------------------------------------------*)
  32.  
  33.   PROCEDURE  WriteCon    ((* EIN/ -- *) zeichen : CHAR );
  34.  
  35.   PROCEDURE  WriteConStr ((* EIN/ -- *) string : ARRAY OF CHAR );
  36.  
  37.  (*------------------------------------------------------------------------
  38.   | Wie "WriteRawCon", aber die Ausgabe laeuft ueber die Terminalemulation |
  39.   | ( Controlcodes werden erkannt ).                                       |
  40.    ------------------------------------------------------------------------*)
  41.  
  42.   PROCEDURE  WriteChar ((* EIN/ -- *) zeichen : CHAR );
  43.  
  44.   PROCEDURE  WriteStr  ((* EIN/ -- *) string : ARRAY OF CHAR );
  45.  
  46.  (*------------------------------------------------------------------------
  47.   | Wie "WriteCon", aber die Ausgabe ist umlenkbar ( laeuft ueber GEMDOS ).|
  48.   | Die Ausgabe ist langsamer als die ueber "WriteCon".                    |
  49.    ------------------------------------------------------------------------*)
  50.  
  51.  
  52.   PROCEDURE  CursorUp;
  53.  
  54.   PROCEDURE  CursorUpScroll;
  55.  
  56.   PROCEDURE  CursorDown;
  57.  
  58.   PROCEDURE  CursorRight;
  59.  
  60.   PROCEDURE  CursorLeft;
  61.  
  62.  (*------------------------------------------------------------------------
  63.   | Die Prozeduren bewegen den Cursor in die jeweils angegeben Richtung;   |
  64.   | stand der Cursor bereits am jeweiligen Rand, passiert nichts, bei      |
  65.   | "CursorUpScroll" wird der Bildschirm jedoch um eine Zeile nach unten   |
  66.   | verschoben.                                                            |
  67.    ------------------------------------------------------------------------*)
  68.  
  69.   PROCEDURE  CursorHome;
  70.  
  71.   PROCEDURE  ClearScreen;
  72.  
  73.  (*------------------------------------------------------------------------
  74.   | Der Cursor wird in die linke obere Ecke gesetzt; "ClearScreen" loescht |
  75.   | zusaetzlich den Bildschirm.                                            |
  76.    ------------------------------------------------------------------------*)
  77.  
  78.   PROCEDURE  EraseToEndOfPage;
  79.  
  80.   PROCEDURE  EraseToEndOfLine;
  81.  
  82.   PROCEDURE  EraseLine;
  83.  
  84.   PROCEDURE  EraseToStartOfPage;
  85.  
  86.   PROCEDURE  EraseToStartOfLine;
  87.  
  88.  (*------------------------------------------------------------------------
  89.   | Loescht den jeweils angegebenen Bereich zwischen Cursor und Zeilen-    |
  90.   | bzw. Seitenrand. Der Cursor bleibt an der bisherigen Position.         |
  91.   | Bei "EraseLine" wird die gesamte Zeile geloescht und der Cursor an den |
  92.   | linken Bildschirmrand gesetzt.                                         |
  93.    ------------------------------------------------------------------------*)
  94.  
  95.   PROCEDURE  InsertLine;
  96.  
  97.   PROCEDURE  DeleteLine;
  98.  
  99.  (*------------------------------------------------------------------------
  100.   | Loescht eine Zeile bzw. fuegt an der Cursorposition eine Leerzeile ein.|
  101.   | Der Cursor bleibt in der bisherigen Zeile und wird an den linken Rand  |
  102.   | gesetzt. Der Bereich zwischen Cursor und unterem Bildschirmrand wird   |
  103.   | entsprechend um eine Zeile nach oben bzw. unten verschoben.            |
  104.    ------------------------------------------------------------------------*)
  105.  
  106.  
  107.   PROCEDURE  AutoWrapOn;
  108.  
  109.   PROCEDURE  AutoWrapOff;
  110.  
  111.  (*------------------------------------------------------------------------
  112.   | Ist der Autowrap-Modus eingeschaltet, wird bei Erreichen des Zeilen-   |
  113.   | endes automatisch eine neue Zeile begonnen, sonst wird nicht ueber den |
  114.   | Zeilenrand hinausgeschrieben, es muss ein explizites CR-LF ausgegeben  |
  115.   | werden ( WriteLn ).                                                    |
  116.    ------------------------------------------------------------------------*)
  117.  
  118.  
  119.   PROCEDURE  GotoXY ((* EIN/ -- *) spalte,
  120.                      (* EIN/ -- *) zeile  : CARDINAL );
  121.  
  122.  (*------------------------------------------------------------------------
  123.   | Setzt den Cursor auf <zeile> und <spalte>.                             |
  124.   | 0 <= zeile <= 24  und  0 <= spalte <= 79; sind <zeile> oder <spalte>   |
  125.   | groesser, so werden sie auf den jeweiligen Maximalwert gesetzt.        |
  126.    ------------------------------------------------------------------------*)
  127.  
  128.   PROCEDURE  SaveCursorPos;
  129.  
  130.   PROCEDURE  RestoreCursorPos;
  131.  
  132.  (*------------------------------------------------------------------------
  133.   | Speichert intern die momentane Cursorposition bzw. setzt den Cursor    |
  134.   | auf den gespeicherten Wert.                                            |
  135.    ------------------------------------------------------------------------*)
  136.  
  137.   PROCEDURE  CursorOn;
  138.  
  139.   PROCEDURE  CursorOff;
  140.  
  141.  (*------------------------------------------------------------------------
  142.   | Der Cursor wird sichtbar bzw. unsichtbar.                              |
  143.    ------------------------------------------------------------------------*)
  144.  
  145.   PROCEDURE  CursorBlinkOn;
  146.  
  147.   PROCEDURE  CursorBlinkOff;
  148.  
  149.  (*------------------------------------------------------------------------
  150.   | Der Cursor blinkt oder wird dauernd sichtbar.                          |
  151.    ------------------------------------------------------------------------*)
  152.  
  153.  
  154.   PROCEDURE  SetBlinkRate ((* EIN/ -- *)     ms : CARDINAL );
  155.  
  156.   PROCEDURE  GetBlinkRate ((* -- /AUS *) VAR ms : CARDINAL );
  157.  
  158.   PROCEDURE  RestoreBlinkRate;
  159.  
  160.  (*------------------------------------------------------------------------
  161.   | Die Blinkgeschwindigkeit des Cursors wird gesetzt bzw. abgefragt.      |
  162.   | <ms> gibt die Periodendauer des Blinkens in Millisekunden an.          |
  163.   | Die genaue Zeit haengt allerdings vom verwendeten Monitor ab ( es wird |
  164.   | Schwarzweiss angenommen) und ist stets ein Vielfaches der doppelten    |
  165.   | Periodendauer der Bildfrequenz.                                        |
  166.   | "RestoreBlinkRate" setzt die Blinkrate auf den Wert, den sie bei       |
  167.   | Programmanfang hatte.                                                  |
  168.    ------------------------------------------------------------------------*)
  169.  
  170.  
  171.   PROCEDURE  InverseOn;
  172.  
  173.   PROCEDURE  InverseOff;
  174.  
  175.  (*------------------------------------------------------------------------
  176.   | Hintergrund- und Vordergrundfarbe werden ausgetauscht bzw. wieder auf  |
  177.   | den Ursprungswert gesetzt.                                             |
  178.    ------------------------------------------------------------------------*)
  179.  
  180.   PROCEDURE  SetForegroundColor ((* EIN/ -- *) farbe : CARDINAL );
  181.  
  182.   PROCEDURE  SetBackgroundColor ((* EIN/ -- *) farbe : CARDINAL );
  183.  
  184.  (*------------------------------------------------------------------------
  185.   | Setzt die Schrift- bzw. Hintergrundfarbe. Die moeglichen Werte fuer    |
  186.   | <farbe> sind von der Bildschirmaufloesung abhaengig:                   |
  187.   |                                                                        |
  188.   |    Hoch    : 0 <= farbe <= 1                                           |
  189.   |    Mittel  : 0 <= farbe <= 3                                           |
  190.   |    Niedrig : 0 <= farbe <= 15                                          |
  191.    ------------------------------------------------------------------------*)
  192.  
  193.  
  194. END  Screen.
  195.